import os

def find_env_names(keyword: str, split_values: bool = False) -> dict:
    """
    在系统环境变量中查找包含指定关键词的变量名，并支持按分号分割值

    参数:
        keyword: 用于匹配的关键词（区分大小写）
        split_values: 是否按分号分割环境变量值

    返回:
        包含匹配的环境变量名及其对应值的字典
    """


    matches = {}

    for var_name, var_value in os.environ.items():
        if keyword.lower() in var_name.lower():
            if split_values:
                # 按分号分割并过滤空值
                parts = [part.strip() for part in var_value.split(';') if part.strip()]
                matches[var_name] = parts
            else:
                matches[var_name] = var_value

    return matches


def find_env_vars(keyword: str) -> dict:
    """
    在系统环境变量中查找包含指定关键词的变量名或值（不区分大小写）

    参数:
        keyword: 用于匹配的关键词

    返回:
        包含匹配的环境变量名及其按分号分割后的值列表的字典
    """

    matches = {}
    keyword_lower = keyword.lower()

    for var_name, var_value in os.environ.items():

        # 在变量值中搜索（不区分大小写）
        if keyword_lower in var_value.lower():
            matches[var_name] = [v.strip() for v in var_value.split(';') if v.strip()]

    return matches

# 美化打印函数
def pretty_print_env_vars(env_vars: dict) -> None:
    """美化打印环境变量及其值"""
    for var_name, var_value in env_vars.items():
        print(f"\n{var_name}:")
        if isinstance(var_value, list):
            # 打印分割后的多行值
            for i, part in enumerate(var_value, 1):
                print(f"  {i}. {part}")
        else:
            # 打印原始值
            print(f"  {var_value}")

def match_environment_variables(keyword):
    """
    该函数用于在系统环境变量中查找包含指定关键词的变量名，并返回匹配的变量名及其对应的值。
    :param keyword: 用于匹配的关键词
    :return: 包含匹配的环境变量名及其值的字典
    """
    matched_vars = {}
    # 遍历系统环境变量
    for var_name, var_value in os.environ.items():
        # print(f"{var_name}: {var_value}")
        # 检查变量名是否包含关键词
        if keyword in var_name:
            matched_vars[var_name] = var_value
    return matched_vars


# 使用示例
if __name__ == "__main__":
    # 查找所有包含 "PATH" 的环境变量并分割值
    path_vars = find_env_names("ANDROID_HOME")
    print(path_vars)
    path_vars = find_env_names("ANDROID_SDK_ROOT")
    print(path_vars)
    # 美化打印结果
    # pretty_print_env_vars(path_vars)
    # path_vars = find_env_vars("node")
    # pretty_print_env_vars(path_vars)